package ynu.edu.entity;

import com.baomidou.mybatisplus.annotation.*;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;

import java.io.Serializable;
import java.math.BigDecimal;
import java.time.LocalDateTime;

/**
 * ControlNet使用记录实体类
 */
@Data
@EqualsAndHashCode(callSuper = false)
@Accessors(chain = true)
@TableName("controlnet_record")
public class ControlNetRecord implements Serializable {

    private static final long serialVersionUID = 1L;

    /**
     * 主键ID
     */
    @TableId(value = "id", type = IdType.AUTO)
    private Long id;

    /**
     * 任务ID（关联Img2Img或Txt2Img）
     */
    @TableField("task_id")
    private String taskId;

    /**
     * 任务类型（img2img/txt2img）
     */
    @TableField("task_type")
    private String taskType;

    /**
     * ControlNet单元索引
     */
    @TableField("unit_index")
    private Integer unitIndex;

    /**
     * ControlNet模块名称
     */
    @TableField("module")
    private String module;

    /**
     * ControlNet模型名称
     */
    @TableField("model")
    private String model;

    /**
     * 权重
     */
    @TableField("weight")
    private BigDecimal weight;

    /**
     * 调整模式
     */
    @TableField("resize_mode")
    private String resizeMode;

    /**
     * 处理器分辨率
     */
    @TableField("processor_res")
    private Integer processorRes;

    /**
     * 阈值A
     */
    @TableField("threshold_a")
    private BigDecimal thresholdA;

    /**
     * 阈值B
     */
    @TableField("threshold_b")
    private BigDecimal thresholdB;

    /**
     * 引导开始
     */
    @TableField("guidance_start")
    private BigDecimal guidanceStart;

    /**
     * 引导结束
     */
    @TableField("guidance_end")
    private BigDecimal guidanceEnd;

    /**
     * 像素完美
     */
    @TableField("pixel_perfect")
    private Boolean pixelPerfect;

    /**
     * 控制模式
     */
    @TableField("control_mode")
    private String controlMode;

    /**
     * 输入图片URL
     */
    @TableField("input_image_url")
    private String inputImageUrl;

    /**
     * 创建时间
     */
    @TableField(value = "create_time", fill = FieldFill.INSERT)
    private LocalDateTime createTime;

    /**
     * 更新时间
     */
    @TableField(value = "update_time", fill = FieldFill.INSERT_UPDATE)
    private LocalDateTime updateTime;

    /**
     * 逻辑删除标志（0：未删除，1：已删除）
     */
    @TableField("deleted")
    @TableLogic
    private Integer deleted;
} 